Printers and other visual output devices that produce output in response to page description language input are widely used. A page description language is a high level language for describing objects to be displayed by an output device. Generally, a page description language is device independent.
In operation, a conventional printer configured to process page description language data interprets the data and transfers the data in display list form to a display list memory. As the display list memory fills, the display lists are rendered into bitmap and stored. The printer has a memory buffer large enough to store (in compressed form) any page that might be printed, and rendered bitmap are generally compressed and stored in this buffer. When the entire page has been rendered, all the rendered data has generally been compressed, and that compressed data is uncompressed and transferred to a print engine or marking engine for printing.
Typically, a printer divides a page into multiple sections called bands that are printed in order. A data object defined by page description language input may span more than one band. Such objects are segregated by the printer to create a display list object for each portion of a data object that intersects a band. As a result, each display list has objects limited to exactly one band. As has been mentioned, these display list objects are transferred to display lists stored in the display list memory.
One problem with conventional printers is that, as data objects are processed, display list memory fills before all the objects for a page had been received. In response, the printer renders the display list objects to free up memory for more objects. Conventional printers have dedicated rendered memories or memory areas separated by fire walls for each of (i) the display lists, (ii) uncompressed output data storage, and (iii) compressed band data storage. Each dedicated memory is sized according to overall system requirements to guarantee correct operation under all circumstances. Accordingly, the dedicated memory resources do not provide a great deal of flexibility in the storage of data.
Cycling is the term applied to the repetitive process of transforming data stored in display lists into compressed data stored in compressed storage. The process begins when a display list is filled, and terminates in the storage of one or more bands in compressed storage. An intermediate step generally includes the decompression of compressed data previously stored, so that new data may be rendered and added to it. Cycling is time consuming, results in inefficiencies, and may result in unnecessary compression and hence loss of fidelity in the printing of a page.